package com.ruoyi.xag.mapper;

import com.ruoyi.xag.domain.IotDeviceInfo;
import com.ruoyi.xag.domain.datapoints.SoilSenorDataPoints;
import com.ruoyi.xag.domain.datapoints.WeatherSenorDataPoints;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @author LiSuxuan
 * @date 2021年 06月 24日 17:05
 */
@Repository
public interface DeviceMapper {

    /**
     * 插入一条土壤传感器数据
     *
     * @param soilSenorDataPoints 对象信息
     * @return 影响行数
     */
    public int insertSoilDataPoints(SoilSenorDataPoints soilSenorDataPoints);


    /**
     * 插入一条传感器数据
     *
     * @param weatherSenorDataPoints 气象数据
     * @return 影响行数
     */
    public int insertWeatherDataPoints(WeatherSenorDataPoints weatherSenorDataPoints);


    /**
     * 查询土壤传感器历史记录
     *
     * @param deviceId 根据设备ID查找
     * @param start    开始时间
     * @param end      结束时间
     * @return 列表
     */
    public List<SoilSenorDataPoints> selectSoilHistoryData(@Param("deviceId") String deviceId, @Param("start") int start, @Param("end") int end);


    /**
     * 查询气象传感器历史记录
     *
     * @param deviceId 根据设备ID查找
     * @param start    开始时间
     * @param end      结束时间
     * @return 列表
     */
    public List<WeatherSenorDataPoints> selectWeatherHistoryData(@Param("deviceId") String deviceId, @Param("start") int start, @Param("end") int end);
    /**
     * 查询土壤传感器历史记录2
     *
     * @param deviceId 根据设备ID查找
     * @param start    开始时间
     * @param end      结束时间
     * @return 列表
     */
    public List<SoilSenorDataPoints> selectSoilHistoryData2(@Param("deviceId") String deviceId, @Param("start") String start, @Param("end") String end);


    /**
     * 查询气象传感器历史记录2
     *
     * @param deviceId 根据设备ID查找
     * @param start    开始时间
     * @param end      结束时间
     * @return 列表
     */
    public List<WeatherSenorDataPoints> selectWeatherHistoryData2(@Param("deviceId") String deviceId, @Param("start")String start, @Param("end")String end);

    /**
     * 查询土壤传感器最近一条数据，用于首页展示
     * @param deviceId 设备唯一ID
     * @return 封装数据对象
     */
    public SoilSenorDataPoints selectSoilDataLast(@Param("deviceId")String deviceId);

    /**
     * 查询气象传感器最近一条数据，用于首页展示
     * @param deviceId 设备唯一ID
     * @return 封装数据对象
     */
    public WeatherSenorDataPoints selectWeatherDataLast(String deviceId);
    public List<IotDeviceInfo> selectAllIotDevice();

    /**
     * 更新设备信息（用于获取数据时实时更新设备的状态和电池余量）
     * @param iotDeviceInfo
     * @return
     */
    public int updateDevice(IotDeviceInfo iotDeviceInfo);
    public int updateDeviceNickName(IotDeviceInfo iotDeviceInfo);

    public IotDeviceInfo selectIotDeviceByDeviceId(String deviceId);
    int insertIotDevice(IotDeviceInfo iotDeviceInfo);
}
